计划阅读调试下Dubbo的源码,结合官方源码分析Dubbo,自身再分析总结
本文对应的Dubbo 服务引入
开始
上一节说了Dubbo服务导出。这一节学习和服务导出类似的Dubbo服务引入
Dubbo服务引入是客户端-服务端模型中的客户端。Dubbo有两种方式:1、直连模式,2、注册中心
直连是通过指定ip以及端口来连接,注册中心,见名知意,是通过注册中心连接,线上环境应该都是注册中心连接,利于服务治理
源码分析
入口
代码的入口在ReferenceBean
的getObject
方法中
getObject方法是Spring的FactoryBean接口的实现,getObject是在获取reference时候被调用。可见,这是一种懒汉式的实现方式
此外,getObject还被afterPropertiesSet方法调用。afterPropertiesSet是InitializingBean接口的方法,将在初始化Bean时候被调用,这是饿汉式实现方式。
1 |
|
reference的init参数被设置的时候会在Bean初始化的时候才会加载Bean
加载
现在回到getObject方法
1 |
|
这里用IDEA调试会有点问题 具体见 #2754
继续往下看
配置
1 | private void init() { |
这里的代码和服务导出的代码太像了。核心流程就是对map填充以及核心配置填充以及校验,这里大胆猜测,这个map同样是为了组装url。
后续的核心逻辑集中在createProxy